
// 包声明：该控制器属于 com.xg.controller 包
package com.xg.controller;

// 导入业务数据对象
import com.xg.model.dto.UserRequest;

// Spring 依赖注入与 Web 相关注解导入
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

// 自定义工具类导入
import com.xg.validator.util.ValidationUtil;

/**
 * 校验控制器类，提供对外的 REST 接口用于执行对象字段校验。
 *
 * 当前仅提供一个 GET 接口 `/validate/validate`，接收 [UserRequest]
 * 类型的参数，并使用 [ValidationUtil.validateAndThrowIfFail()]
 * 方法进行参数校验。
 */
@RestController
@RequestMapping("/validate")
public class ValidateController {

    /**
     * 注入自定义校验工具类 [ValidationUtil](file://F:\Job\Workspace\validate\src\main\java\com\xg\utils\ValidationUtil.java)
     */
    @Autowired
    private ValidationUtil validationUtil;

    /**
     * 校验接口方法
     *
     * 接收一个 [UserRequest] 对象作为请求参数，
     * 调用 [validationUtil.validateAndThrowIfFail(request)]，
     * 进行字段校验。如果校验失败，将抛出 [ValidationException]，
     * 并由全局异常处理器 [GlobalExceptionHandler] 捕获并返回结构化错误信息。
     *
     * @param request 请求参数对象
     * @throws Exception 如果参数校验失败或发生其他异常
     */
    @GetMapping("/validate")
    public void validate(UserRequest request) throws Exception {
        // 执行参数校验逻辑
        validationUtil.validateAndThrowIfFail(request);
    }
}